package broadcast;

import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import org.jaaksi.commondemo.R;
import org.jaaksi.commondemo.model.Person;

/**
 * 创建时间：2017年12月05日15:44 <br>
 * 作者：fuchaoyang <br>
 * 描述：
 */

public class TestReceiverActivity extends Activity {

  private MyBroadcastReceiver mReceiver;

  @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_receiver);

    // 动态注册
    //IntentFilter filter = new IntentFilter("android.intent.action.xixi");

    //IntentFilter filter = new IntentFilter();
    //filter.addAction("android.intent.action.xixi");
    //mReceiver = new MyBroadcastReceiver();
    //registerReceiver(mReceiver, filter);

    // 应用内部发本地广播，效率高 在LocalBroadcastManager构造函数中创建了一个Handler.可见 LocalBroadcastManager 的本质上是通过Handler机制发送和接收消息的。
    //LocalBroadcastManager.getInstance(this).registerReceiver();
    //LocalBroadcastManager.getInstance(this).sendBroadcast()
  }

  @Override public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
  }

  public void onClick(View view) {
    // 1.直接通过class发送广播，收到的action=null
    //Intent intent = new Intent(this, MyBroadcastReceiver.class);

    // 2.通过广播接收的action，隐式发送广播，适用一个广播用来接受多个action，不同的action有不同的处理
    Intent intent = new Intent("android.intent.action.xixi");
    // 防止别的应用的广播接受者接收
    intent.setPackage(getPackageName());

    intent.putExtra("id", 123);
    intent.putExtra("info", new Person("001"));
    sendBroadcast(intent);
    // 发送粘性广播，用法同EventBus粘性事件。需要声明权限 android.permission.BROADCAST_STICKY
    //sendStickyBroadcast();
    // 发送有序广播。 所有接受者都可以设置priority ， 按照priority 的大小顺序进行传递， 上一个优先级的接受者，可以截断和修改intent里面的数据。
    //sendOrderedBroadcast();
  }

  @Override protected void onDestroy() {
    unregisterReceiver(mReceiver);
    //LocalBroadcastManager.getInstance(this).unregisterReceiver();
    super.onDestroy();
  }
}
